AsgDetalleReclamo = function(){
	var rowBodyTpl = Ext.create("Ext.XTemplate", [
      "<tpl for=\".\">",
      	"<div class=\"row\">",
      		"<div class=\"tplTr\">",
      			"<div class=\"tplTd\">",
      				"{asgReclamoAsunto}{asgSeguimientoDescripcion}",
  				"</div>",
			"</div>",
		"</div>",
		"</div>",
	   "</tpl>"
	]);
	return {
		rendererEstado: function(value){
			var tooltip = "";
			if(value == "1"){
				value = "bullet_green.png";
				tooltip = "RECLAMO FINALIZADO";
			}else {
				value = "bullet_red.png";
				tooltip = "RECLAMO EN PROCESO";
			}
			return "<img src=\"" + Asg.constants.CONTEXT_PATH + "/resources/images/" + value + "\" data-qtip=\"" + tooltip + "\" />";
		},
		finalizar: function(btn){
			if(btn == "no") return;
			var asgReclamo = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
			Asg.Message.progress("Guardarndo Informaci\u00F3n...");
			Ext.Ajax.request({
				timeout: Asg.constants.TIMEOUT_SECONDS,
				url: Asg.constants.CONTEXT_PATH + "/reclamos/finalizar",
				params: {
					asgReclamoId: asgReclamo.get("asgReclamoId"),
					asgPolizaId: AsgSeguros.getAsgPolizaId()
				},
				callback: function(options, success, response){
					Ext.Msg.hide();
					var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
					if(!success || !jsonObject){
						Asg.Message.alertInvalid(Asg.constants.DEFAULT_ERROR_MESSAGE);
						return
					}
					Asg.Message.alert(jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE);
					if(jsonObject.success){
						Asg.Grid.loadData("asgDetalleReclamosGrid", jsonObject.reclamos);
						Asg.Grid.loadData("asgDetalleSeguimientosGrid", []);
						Asg.Grid.loadData("asgDetalleContactosGrid", []);
						return;
					}
				}
			});
		},
		confirmFinalizacion: function(){
			var asgReclamo = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
			if(asgReclamo == null || asgReclamo.length == 0){
				Asg.Message.alertInvalid("Debe seleccionar el reclamo a finalizar");
				return;
			}
			Asg.Message.confirm("\u00BFEst\u00E1 seguro que desea finalizar el reclamo?", AsgDetalleReclamo.finalizar);
		},
		saveReclamo: function(){
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.getCmp("asgReclamoForm").getForm().submit({
    			url: Asg.constants.CONTEXT_PATH + "/reclamos/save",
    			timeout: Asg.constants.TIMEOUT_SECONDS,
    			params: {"asgReclamo.asgPoliza.asgPolizaId": AsgSeguros.getAsgPolizaId()},
    			success: function(form, action){
    				Asg.Message.alert(action.result.message);
					if(action.result.success){
						Asg.Grid.loadData("asgDetalleReclamosGrid", action.result.reclamos);
						Asg.Grid.loadData("asgDetalleSeguimientosGrid", []);
						Asg.Grid.loadData("asgDetalleContactosGrid", []);
		    			Ext.WindowMgr.get("asgReclamoWindow").hide();
					}
    			},
    			failure: Asg.Form.failureProcedure
   			});
		},
		saveSeguimiento: function(){
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.getCmp("asgSeguimientoForm").getForm().submit({
    			url: Asg.constants.CONTEXT_PATH + "/seguimientos/save",
    			timeout: Asg.constants.TIMEOUT_SECONDS,
    			params: {
    				"asgSeguimiento.asgReclamo.asgReclamoId": AsgSeguros.getAsgReclamoId(),
    				"identifier": AsgSeguros.getAsgReclamoId(),
    				type: "reclamo"
				},
    			success: function(form, action){
    				Asg.Message.alert(action.result.message);
					if(action.result.success){
						Asg.Grid.loadData("asgDetalleSeguimientosGrid", action.result.seguimientos);
		    			Ext.WindowMgr.get("asgSeguimientoWindow").hide();
					}
    			},
    			failure: Asg.Form.failureProcedure
   			});
		},
		saveContacto: function(){
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.getCmp("asgContactoForm").getForm().submit({
    			url: Asg.constants.CONTEXT_PATH + "/contactos/save",
    			timeout: Asg.constants.TIMEOUT_SECONDS,
    			params: {
    				"asgContacto.asgReclamo.asgReclamoId": AsgSeguros.getAsgReclamoId(),
    				"identifier": AsgSeguros.getAsgReclamoId(),
    				type: "reclamo"
				},
    			success: function(form, action){
    				Asg.Message.alert(action.result.message);
					if(action.result.success){
						Asg.Grid.loadData("asgDetalleContactosGrid", action.result.contactos);
		    			Ext.WindowMgr.get("asgContactoWindow").hide();
					}
    			},
    			failure: Asg.Form.failureProcedure
   			});
		},
		addReclamo: function(){
			if(!Asg.Grid.hasSelection("asgClienteGrid")){
				Asg.Message.alertInvalid("Debe seleccionar la poliza que desea agregarle un reclamo");
				return;
			}
			var window = Ext.WindowMgr.get("asgReclamoWindow");
			if(window){
				if(!window.isVisible()) window.show();
				return;
			}
			new Ext.Window({
				id: "asgReclamoWindow",
				title: Asg.constants.APPLICATION_TITLE + " .::. AGREGAR RECLAMOS",
				modal: true,
				width: 500,
				height: 450,
	        	bodyStyle: "background: #DFE8F6",
	        	listeners: {
	        		show: function(){
	        			var clientePoliza = Asg.Grid.getSelectedRow("asgClienteGrid");
	        			Ext.getCmp("asgReclamoForm").getForm().reset();
	        			Asg.Utils.setValue("asgReclamoCliente", clientePoliza.get("asgClienteNombreCompleto"));
	        			Asg.Utils.setValue("asgClienteDocumento1", clientePoliza.get("asgClienteDocumento1"));
	        			Asg.Utils.setValue("asgClienteDocumento2", clientePoliza.get("asgClienteDocumento2"));
	        			Asg.Utils.setValue("asgPolizaAseguradora", clientePoliza.get("ctgAseguradora"));
	        			Asg.Utils.setValue("asgPolizaAsesor", clientePoliza.get("ctgAsesor"));
	        		}
	        	},
	        	layout: "fit",
				items: {
		        	xtype: "form",
		        	id: "asgReclamoForm",
		        	height: 205,
		        	border: false,
		        	bodyPadding: "5 5 5 5",
		        	layout: {
    	        		type: "table",
						columns: 2,
						tableAttrs: {
				            style: {width: "420px"},
				            align: "center"
						}
    	        	},
    	        	defaults: Asg.Form.defaults({width: 410, allowBlank: false, colspan: 2, labelAlign: "top"}),
    	        	items: [
	        	        {
	        	        	xtype: "datefield", 
	        	        	fieldLabel: "Fecha",
	        	        	name: "asgReclamo.asgReclamoFecha",
	        	        	submitFormat: "Ymd",
	        	        	value: new Date(),
	        	        	readOnly: true,
	        	        	width: 100
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgReclamoCliente",
    	        			fieldLabel: "Cliente",
    	        			disabled: true
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgClienteDocumento1",
    	        			fieldLabel: "DUI",
    	        			disabled: true,
    	        			colspan: 1,
    	        			width: 200
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgClienteDocumento2",
    	        			fieldLabel: "NIT",
    	        			disabled: true,
    	        			colspan: 1,
    	        			width: 200
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgPolizaAseguradora",
    	        			fieldLabel: "Aseguradora",
    	        			disabled: true
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgPolizaAsesor",
    	        			fieldLabel: "Asesor",
    	        			disabled: true
    	        		},{
    	        			xtype: "textarea",
    	        			fieldLabel: "Asunto",
    	        			name: "asgReclamo.asgReclamoAsunto",
    	        			allowBlank: true,
    	        			height: 90,
    	        			maxLength: 500
    	        		},{
    	        			xtype: "textfield",
    	        			name: "asgReclamo.asgReclamoResponsable",
    	        			fieldLabel: "Responsable",
    	        			maxLength: 200
    	        		}
        	        ]
		        },
				buttons: [
		          {
		        	  text: "Guardar",
		        	  handler: function(){
		        		  AsgDetalleReclamo.saveReclamo();
		        	  }
		          },{
		        	  text: "Cerrar",
		        	  handler: function(){
		        		  Ext.WindowMgr.get("asgReclamoWindow").hide();
		        	  }
		          }
	            ]
			}).show();
		},
		addSeguimiento: function(){
			var asgReclamo = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
			if(asgReclamo == null || asgReclamo.length == 0){
				Asg.Message.alertInvalid("Debe seleccionar el reclamo al que desea agregarle un seguimiento");
				return;
			}
			if(asgReclamo.get("asgReclamoFinalizado") == "1"){
				Asg.Message.alertInvalid("Reclamo Finalizado");
				return;
			}
			var window = Ext.WindowMgr.get("asgSeguimientoWindow");
			if(window){
				if(!window.isVisible()) window.show();
				return;
			}
			new Ext.Window({
				id: "asgSeguimientoWindow",
				title: Asg.constants.APPLICATION_TITLE + " .::. AGREGAR SEGUIMIENTOS",
				modal: true,
				width: 500,
				height: 470,
	        	bodyStyle: "background: #DFE8F6",
	        	listeners: {
	        		show: function(){
	        			var asgReclamo = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
	        			var clientePoliza = Asg.Grid.getSelectedRow("asgClienteGrid");
	        			Ext.getCmp("asgSeguimientoForm").getForm().reset();
	        			Asg.Utils.setValue("asgSeguimientoCliente", clientePoliza.get("asgClienteNombreCompleto"));
	        			Asg.Utils.setValue("asgSeguimientoDocumento1", clientePoliza.get("asgClienteDocumento1"));
	        			Asg.Utils.setValue("asgSeguimientoDocumento2", clientePoliza.get("asgClienteDocumento2"));
	        			Asg.Utils.setValue("asgSeguimientoAseguradora", clientePoliza.get("ctgAseguradora"));
	        			Asg.Utils.setValue("asgSeguimientoAsesor", clientePoliza.get("ctgAsesor"));
	        			Asg.Utils.setValue("asgSeguimientoReclamoNumero", asgReclamo.get("asgReclamoNumero"));
	        			var asgContactos = [];
	        			Ext.each(Ext.getCmp("asgDetalleContactosGrid").getStore().getRange(), function(record){
	        				asgContactos.push([
			                   record.get("asgContacto.asgContactoId"),
			                   record.get("asgContacto.asgContactoNombre") + " - " +
			                   record.get("ctgTipoContactoNombre")
		                   ]);
	        			});
	        			Asg.Combo.loadData("asgSeguimientoContacto", asgContactos);
	        		}
	        	},
	        	layout: "fit",
				items: {
		        	xtype: "form",
		        	id: "asgSeguimientoForm",
		        	height: 205,
		        	border: false,
		        	bodyPadding: "5 5 5 5",
		        	layout: {
    	        		type: "table",
						columns: 2,
						tableAttrs: {
				            style: {width: "420px"},
				            align: "center"
						}
    	        	},
    	        	defaults: Asg.Form.defaults({width: 410, allowBlank: false, colspan: 2, labelAlign: "top"}),
    	        	items: [
	        	        {
	        	        	xtype: "textfield", 
	        	        	fieldLabel: "No. Reclamo",
	        	        	id: "asgSeguimientoReclamoNumero",
	        	        	disabled: true,
	        	        	width: 200, 
	        	        	colspan: 1
    	        		},{
	        	        	xtype: "datefield", 
	        	        	fieldLabel: "Proximo Seguimiento",
	        	        	name: "asgSeguimiento.asgSeguimientoFechaSiguiente",
	        	        	submitFormat: "Ymd",
	        	        	value: new Date(),
	        	        	minValue: new Date(),
	        	        	labelWidth: 200,
	        	        	width: 200, 
	        	        	colspan: 1
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgSeguimientoCliente",
    	        			fieldLabel: "Cliente",
    	        			disabled: true
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgSeguimientoDocumento1",
    	        			fieldLabel: "DUI",
    	        			disabled: true,
    	        			colspan: 1,
    	        			width: 200
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgSeguimientoDocumento2",
    	        			fieldLabel: "NIT",
    	        			disabled: true,
    	        			colspan: 1,
    	        			width: 200
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgSeguimientoAseguradora",
    	        			fieldLabel: "Aseguradora",
    	        			disabled: true
    	        		},{
    	        			xtype: "textfield",
    	        			id: "asgSeguimientoAsesor",
    	        			fieldLabel: "Asesor",
    	        			disabled: true
    	        		},{
    	        			xtype: "textarea",
    	        			fieldLabel: "Asunto",
    	        			name: "asgSeguimiento.asgSeguimientoDescripcion",
    	        			allowBlank: true,
    	        			height: 90,
    	        			maxLength: 500
    	        		},{
        	        		xtype: "combo",
        	        		id: "asgSeguimientoContacto",
        	        		name: "asgSeguimiento.asgContacto.asgContactoId",
        	        		fieldLabel: "Tipo de Contacto",
        	        		store: new Ext.data.SimpleStore({
        	        			data: [],
        	        			fields: ["id", "value"]
        	        		}),
        	        		displayField: "value",
        	        		valueField: "id"
    	        		}
        	        ]
		        },
				buttons: [
		          {
		        	  text: "Guardar",
		        	  handler: function(){
		        		  AsgDetalleReclamo.saveSeguimiento();
		        	  }
		          },{
		        	  text: "Cerrar",
		        	  handler: function(){
		        		  Ext.WindowMgr.get("asgSeguimientoWindow").hide();
		        	  }
		          }
	            ]
			}).show();
		},
		addContacto: function(ctgTipoContactos){
			var asgReclamo = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
			if(asgReclamo == null || asgReclamo.length == 0){
				Asg.Message.alertInvalid("Debe seleccionar el reclamo al que desea agregarle un contacto");
				return;
			}
			if(asgReclamo.get("asgReclamoFinalizado") == "1"){
				Asg.Message.alertInvalid("Reclamo Finalizado");
				return;
			}
			var window = Ext.WindowMgr.get("asgContactoWindow");
			if(window){
				if(!window.isVisible()) window.show();
				return;
			}
			new Ext.Window({
				id: "asgContactoWindow",
				title: Asg.constants.APPLICATION_TITLE + " .::. AGREGAR CONTACTOS",
				modal: true,
				width: 500,
				height: 260,
	        	bodyStyle: "background: #DFE8F6",
	        	listeners: {
	        		show: function(){
	        			Ext.getCmp("asgContactoForm").getForm().reset();
	        		}
	        	},
	        	layout: "fit",
				items: {
		        	xtype: "form",
		        	id: "asgContactoForm",
		        	height: 205,
		        	border: false,
		        	bodyPadding: "5 5 5 5",
		        	layout: {
    	        		type: "table",
						columns: 4,
						tableAttrs: {
				            style: {width: "420px"},
				            align: "center"
						}
    	        	},
    	        	defaults: Asg.Form.defaults({width: 410, allowBlank: false, colspan: 2, labelAlign: "top"}),
    	        	items: [
	        	        {
        	        		xtype: "combo",
        	        		name: "asgContacto.ctgTipoContacto.ctgCatalogoId",
        	        		fieldLabel: "Tipo de Contacto",
        	        		store: new Ext.data.SimpleStore({
        	        			data: ctgTipoContactos || [],
        	        			fields: ["id", "value"]
        	        		}),
        	        		displayField: "value",
        	        		valueField: "id",
        	        		colspan: 4
    	        		},{
    	        			xtype: "textfield",
    	        			fieldLabel: "Nombre del Contacto",
    	        			name: "asgContacto.asgContactoNombre",
    	        			maxLength: 250,
    	        			colspan: 4
    	        		},{
    	        			xtype: "textfield",
    	        			fieldLabel: "Tel\u00E9fono del Contacto",
    	        			name: "asgContacto.asgContactoTelefono",
    	        			maxLength: 8,
    	        			vtype: "telefono", 
    	        			colspan: 2,
    	        			width: 200
    	        		},{
    	        			xtype: "textfield",
    	        			fieldLabel: "Tel\u00E9fono",
    	        			name: "asgContacto.asgContactoTelefono2",
    	        			maxLength: 8,
    	        			vtype: "telefono", 
    	        			colspan: 1,
    	        			allowBlank: true,
    	        			width: 140
    	        		},{
    	        			xtype: "textfield",
    	        			fieldLabel: "Ext.",
    	        			name: "asgContacto.asgContactoTelefonoExtension",
    	        			maxLength: 6,
    	        			maskReg: /[0-9]/,
    	        			colspan: 1,
    	        			allowBlank: true,
    	        			width: 50
    	        		},{
    	        			xtype: "textfield",
    	        			fieldLabel: "Correo Electr\u00F3nico del Contacto",
    	        			name: "asgContacto.asgContactoCorreo",
    	        			maxLength: 500,
    	        			vtype: "email", 
    	        			allowBlank: true,
    	        			colspan: 4
    	        		}
        	        ]
		        },
				buttons: [
		          {
		        	  text: "Guardar",
		        	  handler: function(){
		        		  AsgDetalleReclamo.saveContacto();
		        	  }
		          },{
		        	  text: "Cerrar",
		        	  handler: function(){
		        		  Ext.WindowMgr.get("asgContactoWindow").hide();
		        	  }
		          }
	            ]
			}).show();
		},
		getRowBodyContents: function(data) {
            return rowBodyTpl.applyTemplate(data);
        },
		loadReclamos: function(){
			Asg.Message.progress("Cargando Informaci\u00F3n...");
			Ext.Ajax.request({
    			timeout: Asg.constants.TIMEOUT_SECONDS,
  			    url: Asg.constants.CONTEXT_PATH + "/reclamos/findByAsgPolizaId",
  			    params: {
  			    	asgPolizaId: AsgSeguros.getAsgPolizaId()
  			    },
  			    callback: function(options, success, response){
  			    	Ext.Msg.hide();
  			    	if(success){
  			    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
  			    		if(jsonObject && jsonObject.success){
  			    			Asg.Grid.loadData("asgDetalleReclamosGrid", jsonObject.reclamos);
  			    		}else{
  			    			Asg.Message.alertInvalid(jsonObject ? (jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE) : Asg.constants.DEFAULT_ERROR_MESSAGE);
  			    		}
  			    	}
  			    }
  			});
		},
		loadSeguimientos: function(){
			Asg.Message.progress("Cargando Informaci\u00F3n...");
			Ext.Ajax.request({
    			timeout: Asg.constants.TIMEOUT_SECONDS,
  			    url: Asg.constants.CONTEXT_PATH + "/reclamos/findByType",
  			    params: {
  			    	asgReclamoId: AsgSeguros.getAsgReclamoId()
  			    },
  			    callback: function(options, success, response){
  			    	Ext.Msg.hide();
  			    	if(success){
  			    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
  			    		if(jsonObject && jsonObject.success){
  			    			Asg.Grid.loadData("asgDetalleSeguimientosGrid", jsonObject.seguimientos);
  			    			Asg.Grid.loadData("asgDetalleContactosGrid", jsonObject.contactos);
  			    		}else{
  			    			Asg.Message.alertInvalid(jsonObject ? (jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE) : Asg.constants.DEFAULT_ERROR_MESSAGE);
  			    		}
  			    	}
  			    }
  			});
		},
		confirmDeleteSeguimiento: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleSeguimientosGrid"); 
			if(!row){
				Asg.Message.alertInvalid("Debe seleccionar el seguimiento a eliminar");
				return;
			}
			Asg.Message.confirmDelete(AsgDetalleReclamo.deleteSeguimiento);
		},
		deleteSeguimiento: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleSeguimientosGrid");
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.Ajax.request({
    			timeout: Asg.constants.TIMEOUT_SECONDS,
  			    url: Asg.constants.CONTEXT_PATH + "/seguimientos/deleteSeguimiento",
  			    params: {
  			    	type: "reclamo",
  			    	asgSeguimientoId: row.get("asgSeguimientoId"),
  			    	identifier: AsgSeguros.getAsgReclamoId()
  			    },
  			    callback: function(options, success, response){
  			    	Ext.Msg.hide();
  			    	if(success){
  			    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
  			    		if(jsonObject && jsonObject.success){
  			    			Asg.Message.alert(jsonObject.message);
  			    			Asg.Grid.loadData("asgDetalleSeguimientosGrid", jsonObject.seguimientos);
  			    		}else{
  			    			Asg.Message.alertInvalid(jsonObject ? (jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE) : Asg.constants.DEFAULT_ERROR_MESSAGE);
  			    		}
  			    	}
  			    }
  			});
		},
		confirmDeleteContacto: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleContactosGrid"); 
			if(!row){
				Asg.Message.alertInvalid("Debe seleccionar el contacto a eliminar");
				return;
			}
			Asg.Message.confirmDelete(AsgDetalleReclamo.deleteContacto, null, 
					"Se eliminara tambien la informacion asociada al contacto, tales como: <br />* Seguimientos");
		},
		deleteContacto: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleContactosGrid");
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.Ajax.request({
    			timeout: Asg.constants.TIMEOUT_SECONDS,
  			    url: Asg.constants.CONTEXT_PATH + "/contactos/deleteContacto",
  			    params: {
  			    	type: "reclamo",
  			    	asgContactoId: row.get("asgContacto.asgContactoId"),
  			    	identifier: AsgSeguros.getAsgReclamoId()
  			    },
  			    callback: function(options, success, response){
  			    	Ext.Msg.hide();
  			    	if(success){
  			    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
  			    		if(jsonObject && jsonObject.success){
  			    			Asg.Message.alert(jsonObject.message);
  			    			AsgDetallePendiente.loadReclamos();
  			    		}else{
  			    			Asg.Message.alertInvalid(jsonObject ? (jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE) : Asg.constants.DEFAULT_ERROR_MESSAGE);
  			    		}
  			    	}
  			    }
  			});
		},
		confirmDeleteReclamo: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid"); 
			if(!row){
				Asg.Message.alertInvalid("Debe seleccionar el reclamo a eliminar");
				return;
			}
			Asg.Message.confirmDelete(AsgDetalleReclamo.deleteReclamo, null, 
					"Se eliminara tambien la informacion asociada al reclamo, tales como: <br />*Contactos <br />* Seguimientos");
		},
		deleteReclamo: function(){
			var row = Asg.Grid.getSelectedRow("asgDetalleReclamosGrid");
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			Ext.Ajax.request({
    			timeout: Asg.constants.TIMEOUT_SECONDS,
  			    url: Asg.constants.CONTEXT_PATH + "/reclamos/deleteReclamo",
  			    params: {
  			    	asgPolizaId: AsgSeguros.getAsgPolizaId(),
  			    	asgReclamoId: row.get("asgReclamoId")
  			    },
  			    callback: function(options, success, response){
  			    	Ext.Msg.hide();
  			    	if(success){
  			    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
  			    		if(jsonObject && jsonObject.success){
  			    			Asg.Message.alert(jsonObject.message);
  			    			Asg.Grid.loadData("asgDetalleReclamosGrid", jsonObject.reclamos);
  			    			Asg.Grid.loadData("asgDetalleContactosGrid", []);
  			    			Asg.Grid.loadData("asgDetalleSeguimientosGrid", []);
  			    		}else{
  			    			Asg.Message.alertInvalid(jsonObject ? (jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE) : Asg.constants.DEFAULT_ERROR_MESSAGE);
  			    		}
  			    	}
  			    }
  			});
		},
		initConfig: function(config){
			config = config || {};
			Ext.define("asgDetallePolizaModel", {
			    extend: "Ext.data.Model",
			    fields: [
		             "asgClienteId", "asgPolizaId", "asgClienteNombreCompleto", "asgClienteDocumento1", 
		             "asgClienteDocumento2", "asgPolizaNumero", "ctgTipoSeguro", "ctgAseguradora", "ctgAsesor"
	            ]
			});
			var asgDetalleReclamoStore = Ext.create("Ext.data.Store", {
				pageSize: Asg.constants.PAGE_SIZE,
				model: "asgDetallePolizaModel",
				proxy: {
			        type: "ajax",
			        url: Asg.constants.CONTEXT_PATH + "/reclamos/doSearch",
			        reader: {
			        	type: "array",
			        	root: "list",
			        	totalProperty: "totalResult"
	        		}
			    },
			    listeners: {
			    	beforeload: function(store, operation, options){
			    		if(!operation) operation = {};
			    		if(!operation.params) operation.params = {};
			    		var form = Ext.getCmp("asgDetalleAbonoForm").getForm();
			    		if(!form.isValid()){
			    			Asg.Message.alertInvalidFields();
			    			return false;
			    		}
			    		var values = form.getValues();
			    		for(value in values){
			    			operation.params["asgSeguroForm." + value] = values[value];
			    		}
			    		if(operation.params.restart){
			    			operation.start = 0;
			    			operation.page = 1;
			    		}
			    		Asg.Grid.loadData("asgDetalleReclamosGrid", []);
		    			Asg.Grid.loadData("asgDetalleSeguimientosGrid", []);
			    	}
			    	
			    },
			    groupers: [{property: "asgClienteNombreCompleto"}]
			});
			return {
				menu: [
	                "->",
	                Viewport.getMenuHome()
                ],
				items: {
					border: false,
					bodyStyle: "background: #DFE8F6",
					flex: 1,
					layout: {
						type: "hbox",
						align : "stretch",
						pack  : "start"
					},
					items:[
				       {
				        	width: 420,
				        	border: false,
				        	bodyStyle: "background: #DFE8F6",
				        	layout: {
								type: "vbox",
								align : "stretch",
								pack  : "start"
							},
							items: [
								{
						        	xtype: "form",
						        	id: "asgDetalleAbonoForm",
						        	height: 125,
						        	bodyStyle: "background: #DFE8F6",
						        	layout: "fit",
						        	border: false,
						        	margins: "0 5 5 0",
									items: {
										xtype: "fieldset",
										title: "PARAMETROS DE BUSQUEDA",
										style: "background: #FFFFFF;",
										layout: {
				        	        		type: "table",
											columns: 2,
											tableAttrs: {
									            style: {width: "400px"},
									            align: "center"
											}
				        	        	},
				        	        	defaults: Asg.Form.defaults({width: 250, labelAlign: "top"}),
				        	        	items: [
				    	        	        {
				    	        	        	xtype: "textfield",
				    	        	        	id: "asgPolizaNumero",
				    	        	        	name: "asgPolizaNumero",
				    	        	        	fieldLabel: "No. Poliza",
				    	        	        	width: 100
				    	        	        },{
				    	        	        	xtype: "textfield",
				    	        	        	id: "asgClienteNombreCompleto",
				    	        	        	name: "asgClienteNombreCompleto",
				    	        	        	fieldLabel: "Cliente / Raz\u00F3n Social / Nombre Comercial"
				    	        	        },{
				    	        	        	xtype: "combo",
				    	        	        	id: "asgEstados",
				    	        	        	name: "asgFinalizado",
				    	        	        	fieldLabel: "Estado del Reclamo",
		        	        	        		store: new Ext.data.SimpleStore({
		        	        	        			data: Asg.Combo.status(),
		        	        	        			fields: ["id", "value"]
		        	        	        		}),
		        	        	        		displayField: "value",
		        	        	        		valueField: "id",
		        	        	        		value: "0",
				    	        	        	width: 225,
				    	        	        	colspan: 2
				    	        	        }
					        	        ]
									}
						        },{
									xtype: "grid",
									id: "asgClienteGrid",
									flex: 1,
									margins: "0 5 0 0",
									frame: true,
									minHeight: 300,
									store: asgDetalleReclamoStore,
									columns: [
				        	           {header: "No. Poliza", dataIndex: "asgPolizaNumero", width: 100},
				        	           {header: "Aseguradora", dataIndex: "ctgAseguradora", flex: 1, minWidth: 150},
				        	           {header: "Tipo de Seguro", dataIndex: "ctgTipoSeguro", flex: 1, minWidth: 150}
			        	            ],
			        	            selModel:{
				        	            listeners: {
				        	            	selectionchange: function(selectionModel, rows){
				        	            		if(rows && rows.length > 0){
				        	            			AsgSeguros.setAsgClienteId(rows[0].get("asgClienteId"));
				        	            			AsgSeguros.setAsgPolizaId(rows[0].get("asgPolizaId"));
				        	            			AsgDetalleReclamo.loadReclamos();
				        	            			Asg.Grid.loadData("asgDetalleSeguimientosGrid", []);
				        	            		}
				        	            	}
				        	            }
			        	            },
			        	            features: [
	        				           {
	        				        	   ftype: "grouping",
	        				        	   enableNoGroups: false,
	        				        	   groupHeaderTpl: "{name} -> {rows.length} Poliza{[values.rows.length > 1 ? \"s\" : \"\"]}"
	        				           }
	        			            ],
								    dockedItems: [
			                           {
			                        	   xtype: "toolbar",
			                        	   dock: "top",
			                        	   items: [
			                    	           "->",
			                    	           {
			                    	        	   text: "Buscar", 
			                    	        	   iconCls: Asg.constants.SEARCH_ICON,
			                    	        	   handler: function(){
			                    	        		   asgDetalleReclamoStore.currentPage = 1;
			                    	        		   asgDetalleReclamoStore.load({params:{restart: true}});
			                    	        		   AsgSeguros.setAsgClienteId(null);
			                    	        		   AsgSeguros.setAsgPolizaId(null);
			                    	        	   }
			                	        	   },{
			                    	        	   text: "Borrar Filtros", 
			                    	        	   iconCls: Asg.constants.CANCEL_ICON,
			                    	        	   handler: function(){
			                    	        		   Ext.getCmp("asgDetalleAbonoForm").getForm().reset();
			                    	        	   }
			                	        	   }
			                	           ]
			                           },{
			                        	   xtype: "pagingtoolbar",
			                        	   store: asgDetalleReclamoStore,
			                        	   dock: "bottom",
			                        	   displayInfo: true
						               }
			                        ]
								}
					        ]
				        },
				        {
				        	flex: 1,
				        	minWidth: 500,
				        	border: false,
				        	bodyStyle: "background: #DFE8F6",
				        	layout: {
								type: "vbox",
								align : "stretch",
								pack  : "start"
							},
							items: [
								{
									xtype: "grid",
									id: "asgDetalleReclamosGrid",
									title: "Reclamos",
									margins: "0 0 5 0",
									minHeight: 220,
									flex: 1,
									frame: true,
									tbar: [
								       "->",
								       {
				    			        	text: "Agregar", 
				    			        	iconCls: Asg.constants.ADD_ICON,
				    			        	hidden: config.isReadOnly,
				    			        	handler: function(){
				    			        		AsgDetalleReclamo.addReclamo();
				    			        	}
								       },{
			        	        			text: "Eliminar",
			        	        			iconCls: Asg.constants.DELETE_ICON,
			        	        			hidden: !config.allowDelete,
			        	        			handler: AsgDetalleReclamo.confirmDeleteReclamo
   		    	        			   },{
								    	   text: "Finalizar", 
								    	   iconCls: Asg.constants.ACCEPT_ICON,
								    	   hidden: config.isReadOnly,
								    	   handler: AsgDetalleReclamo.confirmFinalizacion
								       }
							        ],
									store: new Ext.data.SimpleStore({
										data: [],
								        fields: [
								             "asgReclamoId", "asgReclamoNumero", "asgReclamoResponsable",
								             "asgReclamoFecha", "asgReclamoAsunto", "asgReclamoFinalizado", 
								             "asgReclamoFechaFinalizacion", "asgReclamoTiempo"
								        ]
									}),
									columns: [
 							            {dataIndex: "asgReclamoFinalizado", width: 30, renderer: AsgDetalleReclamo.rendererEstado},
										{header: "No. Reclamo", dataIndex: "asgReclamoNumero", width: 100},
								        {header: "Responsable", dataIndex: "asgReclamoResponsable", minWidth: 150, flex: 1},
								        {header: "Fecha Creaci\u00F3n", dataIndex: "asgReclamoFecha", width: 150, align: "right", renderer: "webFormatDateYmd_d_m_Y"},
								        {header: "Fecha Finalizaci\u00F3n", dataIndex: "asgReclamoFechaFinalizacion", width: 150, align: "right", renderer: "webFormatDateYmd_d_m_Y"},
								        {header: "Duraci\u00F3n", dataIndex: "asgReclamoTiempo", width: 150, align: "right"}
								    ],
								    selModel:{
				        	            listeners: {
				        	            	selectionchange: function(selectionModel, rows){
				        	            		if(rows && rows.length > 0){
				        	            			AsgSeguros.setAsgReclamoId(rows[0].get("asgReclamoId"));
				        	            			AsgDetalleReclamo.loadSeguimientos();
				        	            		}
				        	            	}
				        	            }
			        	            },
								    features: [
								       {
								    	   ftype: 'rowbody',
								    	   getAdditionalData: Asg.Grid.getAdditionalData,
								    	   getRowBodyContents: AsgDetalleReclamo.getRowBodyContents
								       }
								    ]
								},{
						        	flex: 1,
						        	minHeight: 250,
						        	border: false,
						        	bodyStyle: "background: #DFE8F6",
						        	layout: {
										type: "hbox",
										align : "stretch",
										pack  : "start"
									},
									items: [
										{
											xtype: "grid",
											id: "asgDetalleContactosGrid",
											title: "Contactos",
											margins: "0 5 5 0",
											flex: 1,
											frame: true,
											tbar: [
												"->",
												{
													text: "Agregar", 
													iconCls: Asg.constants.ADD_ICON,
													hidden: config.isReadOnly,
													handler: function(){
														AsgDetalleReclamo.addContacto(config.ctgTipoContactos);
													}
												},{
					        	        			text: "Eliminar",
					        	        			iconCls: Asg.constants.DELETE_ICON,
					        	        			hidden: !config.allowDelete,
					        	        			handler: AsgDetalleReclamo.confirmDeleteContacto
		   		    	        			   }
									        ],
											store: new Ext.data.SimpleStore({
												data: [],
										        fields: [
										             "asgContacto.asgContactoId", "asgContacto.asgContactoNombre", "asgContacto.asgContactoTelefono",
										             "asgContacto.asgContactoTelefono2", "asgContacto.asgContactoTelefonoExtension",
										             "asgContacto.asgContactoCorreo", "asgContacto.ctgTipoContacto.ctgCatalogoId", 
										             "ctgTipoContactoNombre"
										        ]
											}),
											columns: [
									            {header: "Tipo", dataIndex: "ctgTipoContactoNombre", width: 160},
										        {header: "Nombre", dataIndex: "asgContacto.asgContactoNombre", minWidth: 185, flex: 1},
										        {header: "Tel\u00E9fono", dataIndex: "asgContacto.asgContactoTelefono", width: 65},
										        {header: "Tel\u00E9fono", dataIndex: "asgContacto.asgContactoTelefono2", width: 65},
										        {header: "Ext.", dataIndex: "asgContacto.asgContactoTelefonoExtension", width: 65},
										        {header: "Correo Electr\u00F3nico", dataIndex: "asgContacto.asgContactoCorreo", width: 250, renderer: "mailTo"}
										    ]
										},{
											xtype: "grid",
											id: "asgDetalleSeguimientosGrid",
											title: "Seguimientos",
											margins: "0 0 5 0",
											flex: 1,
											frame: true,
											tbar: [
												"->",
												{
													text: "Agregar", 
													iconCls: Asg.constants.ADD_ICON,
													hidden: config.isReadOnly,
													handler: function(){
														AsgDetalleReclamo.addSeguimiento();
													}
												},{
					        	        			text: "Eliminar",
					        	        			iconCls: Asg.constants.DELETE_ICON,
					        	        			hidden: !config.allowDelete,
					        	        			handler: AsgDetalleReclamo.confirmDeleteSeguimiento
		   		    	        			   }
									        ],
											store: new Ext.data.SimpleStore({
												data: [],
										        fields: [
										             "asgSeguimientoId", "asgSeguimientoFecha", "asgSeguimientoFechaSiguiente", 
										             "asgContactoNombre", "ctgTipoContactoNombre", "asgSeguimientoDescripcion"
										        ],
										        sorters: [{property: "asgSeguimientoId", direction: "DESC"}]
											}),
											columns: [
										        {header: "Tipo", dataIndex: "ctgTipoContactoNombre", width: 140},
										        {header: "Responsable", dataIndex: "asgContactoNombre", minWidth: 150, flex: 1},
										        {header: "Proximo Seguimiento", dataIndex: "asgSeguimientoFechaSiguiente", width: 115, align: "right", renderer: "webFormatDateYmd_d_m_Y", style: "color: darkred"},
										        {header: "Fecha Ingreso", dataIndex: "asgSeguimientoFecha", width: 85, renderer: "webFormatDateYmd_d_m_Y"}
										    ],
										    features: [
										       {
										    	   ftype: 'rowbody',
										    	   getAdditionalData: Asg.Grid.getAdditionalData,
										    	   getRowBodyContents: AsgDetalleReclamo.getRowBodyContents
										       }
										    ]
										}
							        ]
								}
					        ]
				        }
			        ]
				}
			};
		}
	};
}();